﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using SisEagle.View.Web.Base;
using SisEagle.IView.Pagamento;
using System.Data;

namespace SisEagle.View.Web.Pagamento
{
    public partial class FormasPagamento : WebPageBase, IFormasPagamentoView
    {
        #region Singleton
        private SisEagleBO.FormasPagamentosBO _FormasPagamentosBusiness;
        private SisEagleBO.FormasPagamentosBO FormasPagamentosBusiness
        {
            get
            {
                if (_FormasPagamentosBusiness == null)
                    _FormasPagamentosBusiness = new SisEagleBO.FormasPagamentosBO();

                return _FormasPagamentosBusiness;
            }
        }

        #endregion

        #region Page-Load

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            if (!DesignMode)
            {
                inicialize();
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {

            }
        }
        private void inicialize()
        {
            btnLocalizar.Click += (btnLocalizar_Click);
            gridFormasPagamento.RowDataBound += gridFormasPagamento_RowDataBound;
            gridFormasPagamento.PageIndexChanging += (gridFormasPagamento_PageIndexChanging);

        }

        void gridFormasPagamento_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int TotalRow = ListaResultado.Tables["FormasPagamentos"].Rows.Count;
            AjustaTotalizador(TotalRow,null,string.Empty,null, string.Empty, e);
        }

        void gridFormasPagamento_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridFormasPagamento.PageIndex = e.NewPageIndex;
            gridFormasPagamento.DataSource = BuscarFormasPagamentos();
            gridFormasPagamento.DataBind();
        }

        private DataView BuscarFormasPagamentos()
        {
            DataView dv = new DataView();

            dv = FormasPagamentosBusiness.FindAll().Tables[0].DefaultView;

            return dv;
        }
        #endregion

        #region Internal

        protected void btnLocalizar_Click(object sender, ImageClickEventArgs e)
        {
            CarregaGrid();
        }

        private void CarregaGrid()
        {
            gridFormasPagamento.DataSource = ListaResultado;
            gridFormasPagamento.DataBind();
        }

        #endregion

        #region Binding
        public int CodFormaPagamento
        {
            get
            {
                if (string.IsNullOrEmpty(txtCodigo.Text) || !(UtilsNumber.IsNumber(txtCodigo.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(txtCodigo.Text);

            }
            set
            {
                txtCodigo.Text = value.ToString();
            }
        }

        public string Descricao
        {
            get
            {
                if (string.IsNullOrEmpty(txtDescricao.Text))
                    return string.Empty;

                else
                    return txtDescricao.Text.TrimStart();
            }
            set
            {
                txtDescricao.Text = value;
            }
        }

        public int QuantidadParcelas
        {
            get
            {
                if (string.IsNullOrEmpty(txtQuantidadeParcelas.Text) || !(UtilsNumber.IsNumber(txtQuantidadeParcelas.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(txtQuantidadeParcelas.Text);

            }
            set
            {
                txtQuantidadeParcelas.Text = value.ToString();
            }
        }


        public System.Data.DataSet ListaResultado
        {
            get
            {
                if (CodFormaPagamento != 0)
                    return FormasPagamentosBusiness.FindBy_CodFormaPagamento(CodFormaPagamento);

                if (!string.IsNullOrEmpty(Descricao))
                    return FormasPagamentosBusiness.FindBy_Descricao(Descricao);

                if (QuantidadParcelas != 0)
                    return FormasPagamentosBusiness.FindBy_QuantidadeParcelas(QuantidadParcelas);
                else
                    return FormasPagamentosBusiness.FindAll();

            }
            set
            {
                ListaResultado = value;
                CarregaGrid();
            }
        }
        #endregion
    }
}